package br.com.javajsf.controle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.primefaces.context.RequestContext;

import br.com.javajsf.modelo.Produto;
import br.com.javajsf.negocio.CadastradorProduto;

@ManagedBean(name = "atuProdutoBean")
@ViewScoped
public class CAtualizarProduto implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private Produto produto;
	private CadastradorProduto prodDao;
	private List<SelectItem> listaItemProduto;
	private List<Produto> listProduto;
	private int produtoSelecionado;
	
	
	public CAtualizarProduto(){
		setProduto(new Produto());
	}
	
	@PostConstruct
	public void init(){
		if (prodDao == null) {
			prodDao = new CadastradorProduto();
		}
		if(listaItemProduto == null){
			setListaItemProduto(getListaProduto());
		}
	}
	
	public List<SelectItem> getListaProduto(){
		ArrayList<SelectItem> listaIterable = new ArrayList<SelectItem>();
		listProduto = (List<Produto>) prodDao.listarTodos();
		
		for (Produto prod : listProduto) {
			listaIterable.add(new SelectItem(prod.getCod(), prod.getNome()));
		}
		return listaIterable;
	}

	public String atualizarProduto(){
		FacesContext context = FacesContext.getCurrentInstance();
		try {

			if (produto.getCod() != 0) {
				prodDao.atualizar(produto);
				context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Produto Atualizado"));
			}else{
				context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Produto nao existe"));
			}
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "nao foi possivel deletar o produto"));
		}
		
		return "atuproduto.jsf";
	}
	
	public void carregarProduto(){
		produto = (Produto) prodDao.buscarCod(produtoSelecionado);
	}
	
	public String cancelar(){
		return "index.jsf?faces-redirect=true";
	}
	
	//
	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public List<SelectItem> getListaItemProduto() {
		return listaItemProduto;
	}

	public void setListaItemProduto(List<SelectItem> listaItemProduto) {
		this.listaItemProduto = listaItemProduto;
	}

	public int getProdutoSelecionado() {
		return produtoSelecionado;
	}

	public void setProdutoSelecionado(int produtoSelecionado) {
		this.produtoSelecionado = produtoSelecionado;
	}

}
